//package com.waitingresult.controller;
//
//import com.alibaba.excel.EasyExcel;
//import com.alibaba.excel.read.listener.PageReadListener;
//import com.alibaba.excel.util.ListUtils;
//import com.waitingresult.common.Result;
//import com.waitingresult.entity.*;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//import static com.alibaba.excel.read.listener.PageReadListener.BATCH_COUNT;
//
///**
// * @Author: WangShuai
// * @CreateTime: 2022-11-23  17:55
// * @Description: TODO
// * @Version: 1.0
// */
//@Slf4j
//@RestController
//@RequestMapping("/api-feeDetaiService")
//public class ExcelDemoController {
//    @PostMapping(value = "select", name = "查询")
//    public Result<Object> select(@RequestBody DemoRequest demoRequest) {
//        System.err.println(demoRequest);
//        return Result.success();
//    }
//
//    //D:\coding\my\mall-cloud\mysql-init
//    @GetMapping(value = "read", name = "read")
//    public Result<Object> read() {
//        String fileName = "D:\\coding\\my\\mall-cloud\\mysql-init\\ins_db_tbl_col.xlsx";
////        EasyExcel.write(fileName, DbEntity.class, new DbListener()).sheet().doRead();
//        List<DbEntity> cachedDataList = ListUtils.newArrayListWithExpectedSize(1000000);
//        // 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行
//        // 具体需要返回多少行可以在`PageReadListener`的构造函数设置
//        EasyExcel.read(fileName, DbEntity.class, new PageReadListener<DbEntity>(cachedDataList::addAll)).sheet().doRead();
//        Map<String, List<DbEntity>> groupingMap = cachedDataList.stream().collect(Collectors.groupingBy(DbEntity::getGroup));
//        ArrayList<DbEntityModel> modelList = new ArrayList<>();
//        // 组
//        groupingMap.forEach((groupKey, groupValue) -> {
//            DbEntityModel model = new DbEntityModel();
//            model.setGroup(groupKey);
//            ArrayList<DataBase> dataBasearrayList = new ArrayList<>();
//            // 库
//            Map<String, List<DbEntity>> database = groupValue.stream().collect(Collectors.groupingBy(DbEntity::getDatabase));
//            database.forEach((dataBaseKey, dataBaseValue) -> {
//                DataBase dataBase = new DataBase();
//                Map<String, List<DbEntity>> tableName = dataBaseValue.stream().collect(Collectors.groupingBy(DbEntity::getTableName));
//                dataBase.setDataBaseName(dataBaseKey);
//                tableName.forEach((tableNameKey, tableNameValue) -> {
//                    List<Table> collect = tableNameValue.stream().map(it -> {
//                        Table table = new Table();
//                        table.setFieldDesc(it.getFieldDesc());
//                        table.setFieldName(it.getFieldName());
//                        table.setFieldType(it.getFieldType());
//                        return table;
//                    }).toList();
//                    dataBase.setTable(collect);
//                    dataBasearrayList.add(dataBase);
//                });
//            });
//            model.setDatabase(dataBasearrayList);
//            modelList.add(model);
//        });
//        return Result.success(modelList.get(38));
//    }
//
//    @GetMapping(value = "exportFeeDetail", name = "导出费用明细")
//    public Result<Object> exportFeeDetail() {
//        ArrayList<User> users = getUsers();
//        String fileName = "D:\\coding_cache\\demo" + System.currentTimeMillis() + ".xlsx";
//        EasyExcel.write(fileName, User.class)
//                .sheet("shell1")
//                .doWrite(users);
//        return Result.success();
//    }
//
//    private static ArrayList<User> getUsers() {
//        ArrayList<User> users = new ArrayList<>();
//        int deptId = 1;
//        for (int i = 0; i < 10000; i++) {
//            if (i % 100 == 0) {
//                deptId++;
//            }
//            ArrayList<String> stringList = new ArrayList<>();
//            String name = "百万企业" + deptId;
//            stringList.add(name);
//            users.add(new User(i, deptId, "百万姓名" + i, "百万地址" + deptId));
//        }
//        return users;
//    }
//}
